/**
 * @官方网站 : https://douma.ke.qq.com
 * @微信公众号 : 抖码课堂
 * @官方微信号 : bigdatatang01
 * @作者 : 老汤
 */

#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>

#define NUM_OF_TASKS 5

// 1. 声明线程函数
void *print_hello_world(void *tid)
{
    printf("Hello World. From thread %d\n", tid);
    // 4. 线程结束
    pthread_exit(NULL);
}

int main()
{
    // 主线程创建 5 个线程，然后退出
    // 2. 声明线程对象
    pthread_t threads[NUM_OF_TASKS];
    int status, i;

    for (i = 0; i < NUM_OF_TASKS; ++i) {
        printf("creating thread %d\n", i);

        // 3. 设置线程的属性
        pthread_attr_t thread_attr; // 声明线程属性
        pthread_attr_init(&thread_attr); // 初始化线程属性
        // 设置线程栈的大小
        pthread_attr_setstacksize(&thread_attr, 4096);

        // 4. 创建线程 (线程开始)
        status = pthread_create(&threads[i], NULL, print_hello_world, (void *)i);
        if (status != 0) {
            printf("creating thread error, error code %d\n", status);
            exit(-1);
        }
    }

    // 5. 主线程退出
    exit(NULL);
}

